import { ElMessage, ElMessageBox, ElNotification } from 'element-plus'

// 创建消息实例
const messageInstance = {
  // 消息提示
  info(content) {
    ElMessage.info(content)
  },
  // 错误消息
  error(content) {
    ElMessage.error(content)
  },
  // 成功消息
  success(content) {
    ElMessage.success(content)
  },
  // 警告消息
  warning(content) {
    ElMessage.warning(content)
  },
  // 弹出提示
  alert(content) {
    ElMessageBox.alert(content, '确认')
  },
  // 错误提示
  alertError(content) {
    ElMessageBox.alert(content, '确认', { type: 'error' })
  },
  // 成功提示
  alertSuccess(content) {
    ElMessageBox.alert(content, '确认', { type: 'success' })
  },
  // 警告提示
  alertWarning(content) {
    ElMessageBox.alert(content, '确认', { type: 'warning' })
  },
  // 通知提示
  notify(content) {
    ElNotification.info(content)
  },
  // 错误通知
  notifyError(content) {
    ElNotification.error(content)
  },
  // 成功通知
  notifySuccess(content) {
    ElNotification.success(content)
  },
  // 警告通知
  notifyWarning(content) {
    ElNotification.warning(content)
  },
  // 确认窗体
  confirm(content, tip) {
    return ElMessageBox.confirm(content, tip ? tip : '确认', {
      confirmButtonText: '确定',
      cancelButtonText: '取消',
      type: 'warning'
    })
  },
  // 删除窗体
  delConfirm(content, tip) {
    return ElMessageBox.confirm(
      content ? content : '确定要删除吗？',
      tip ? tip : '确认',
      {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        type: 'warning'
      }
    )
  },
  // 导出窗体
  exportConfirm(content, tip) {
    return ElMessageBox.confirm(
      content ? content : '确定要导出吗？',
      tip ? tip : '确认',
      {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        type: 'warning'
      }
    )
  },
  // 提交内容
  prompt(content, tip) {
    return ElMessageBox.prompt(content, tip, {
      confirmButtonText: '确定',
      cancelButtonText: '取消',
      type: 'warning'
    })
  }
}

// 保留原有的 useMessage 函数，保持向后兼容
export const useMessage = () => messageInstance
// 导出 Vue 插件
export default {
  install(app) {
    // 添加全局属性
    app.config.globalProperties.$message = messageInstance
    // 同时挂载到全局
    globalThis.$message = messageInstance
    // 将 useMessage 函数也挂载到全局
    globalThis.useMessage = useMessage
  }
}

// 导出消息实例，方便按需引入
export const message = messageInstance